home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-04-04 | 2.0 KB | 93 lines |
- 10 ' ************
- 20 ' * BIORHYTH *
- 30 ' ************
- 100 REM: DISPLAY BIORHYTHM CHARTS
- 120 REM: IBM BASIC 80 COLUMN CRT
- 140 DEFINT K,L:DEFDBL B,J,M-Z
- 150 L=0:Z=0.99999:T=33:P=3.14159:I=1
- 160 KEY OFF:SCREEN 0,0:WIDTH 80:COLOR 7,0:CLS
- 170 PRINT TAB(8);"BIORHYTHM"
- 180 GOSUB 1000:PRINT:PRINT
- 190 PRINT"ENTER BIRTH DATE"
- 200 GOSUB 450
- 210 GOSUB 550
- 220 JB=JD
- 230 PRINT:PRINT"ENTER START DATE FOR CHART"
- 240 GOSUB 450
- 250 GOSUB 550
- 260 JC=JD
- 270 IF JC>=JB THEN 310
- 280 PRINT"CHART DATE CAN'T BE EARLIER"
- 290 PRINT"THAN BIRTH DATE. TRY AGAIN."
- 300 GOTO 180
- 310 FOR K=1 TO 1000:NEXT
- 320 GOSUB 630
- 330 N=JC-JB
- 340 V=23:GOSUB 690
- 350 V=28:GOSUB 690
- 360 V=33:GOSUB 690
- 370 GOSUB 850
- 380 PRINT TAB(1);C$;TAB(9);L$
- 390 JC=JC+1:L=L+1:IF L<18 THEN 330
- 400 PRINT:PRINT"PRESS Esc TO END PGM, 'E' TO END CHART, SPACE TO CONTINUE";
- 410 R$=INKEY$:IF LEN(R$)=0 THEN 410
- 420 IF ASC(R$)=27 THEN END
- 430 IF R$="E" OR R$="e" THEN 150
- 440 L=0:GOTO 320
- 450 PRINT
- 460 INPUT "MONTH (1 TO 12)";M
- 470 M=INT(M):IF M<1 OR M>12 THEN BEEP:GOTO 460
- 480 INPUT "DAY (1 TO 31)";D
- 490 D=INT(D):IF D<1 OR D>31 THEN BEEP:GOTO 480
- 500 INPUT "YEAR";Y
- 510 Y=INT(Y):IF Y<0 THEN 500
- 520 IF Y>99 THEN 540
- 530 Y=Y+1900:PRINT Y;"ASSUMED."
- 540 RETURN
- 550 W=INT((M-14)/12+Z)
- 560 JD=INT(1461*(Y+4800+W)/4)
- 570 B=367*(M-2-W*12)/12
- 580 IF B<0 THEN B=B+Z
- 590 B=INT(B):JD=JD+B
- 600 B=INT(INT(3*(Y+4900+W)/100)/4)
- 610 JD=JD+D-32075-B
- 620 RETURN
- 630 CLS
- 640 PRINT TAB(T+5);"BIORHYTHM"
- 650 PRINT TAB(1);"--DATE--";TAB(5+INT(T/2));
- 660 PRINT "D O W N";TAB(9+T);"0";TAB(8+INT(1.5*T));"U P"
- 670 PRINT TAB(9);U$
- 680 RETURN
- 690 W=INT(N/V):R=N-W*V
- 700 IF V<>23 THEN 730
- 710 L$=STRING$(T,32)+CHR$(176)+STRING$(T,32)
- 720 IF V=23 THEN C$="P"
- 730 IF V=28 THEN C$="E"
- 740 IF V=33 THEN C$="I"
- 750 W=R/V:W=W*2*P
- 760 W=T*SIN(W):W=W+T+1.5
- 770 W=INT(W):A$=MID$(L$,W,1)
- 780 IF A$="P" OR A$="E" OR A$="*" THEN C$="*"
- 790 IF W=1 THEN 830
- 800 IF W=T+T+1 THEN 840
- 810 L$=LEFT$(L$,W-1)+C$+RIGHT$(L$,T+T+1-W)
- 820 RETURN
- 830 L$=C$+RIGHT$(L$,T+T):RETURN
- 840 L$=LEFT$(L$,T+T)+C$:RETURN
- 850 W=JC+68569:R=INT(4*W/146097)
- 860 W=W-INT((146097*R+3)/4)
- 870 Y=INT(4000*(W+1)/1.461E+06)
- 880 W=W-INT(1461*Y/4)+31
- 890 M=INT(80*W/2447)
- 900 D=W-INT(2447*M/80)
- 910 W=INT(M/11):M=M+2-12*W
- 920 Y=100*(R-49)+Y+W
- 930 A$=STR$(M):W=LEN(A$)-1
- 940 C$=MID$(A$,2,W)+"/"
- 950 A$=STR$(D):W=LEN(A$)-1
- 960 C$=C$+MID$(A$,2,W)+"/"
- 970 A$=STR$(Y):W=LEN(A$)-1
- 980 C$=C$+MID$(A$,W,2)
- 990 RETURN
- 1000 U$=STRING$((T+T+1),176):RETURN
-